package dichotomy.pow.x.y;
/**
 * @Time 2020/1/20
 * @author 王光浩
 * @Need 给出x和y求出x^y的值。
 * @Thinking 暴力法。
 *           复杂度分析：时间复杂度O（n-1），空间复杂度O（1）
 *           运行结果：超出时间限制
 *           改进：每次乘x^2。
 *           运行结果：超出时间限制。
 *           
 */
public class MyMethodOne {
	/**
	 * @Describle 求出x^n的值，注意当n为负值时，x不能为0
	 * @param x
	 * @param n
	 * @return X^n
	 */
    public double myPow(double x, int n) {
        if(x==0 || x==1 || n==1)return x; 
        if(n==0)return 1;
        int re=(int)Math.abs((double)n)%2;
        int tem=(int)Math.abs((double)n)/2;
        double sqr=x*x;
        double result=1;
        //获取对应的值
        for(int i=0;i<tem;i++) {
        	result*=sqr;
        }
        if(re==1)result*=x;
        return (n<0?1/result:result);
    }
}
